Verilog表示小数

您所在的位置:网站首页 Verilog语言中实数01可以表示成 1 Verilog表示小数

Verilog表示小数

2024-06-15 03:31| 来源: 网络整理| 查看: 265

最近博主搞FPGA图像处理,由于用作三维成像那么精度必不可少啊,但是Verilog又不像c等高级语言一样,我随便设个double就可以赋值啊啥的,那么咋办,定点小数就孕育而生了。当然verilog也可以用浮点数表示,这里博主就不提及了。

何谓定点小数,顾名思义,就是小数位后的数目固定,即精度固定,这里假设有一个16位的变量,我们使它的精度为8位,那么它的精度是多少呢? 其实就是1/2^8=0.00390625.这里举个例子说明

例如有个 reg [15:0] a=16'b0111_1011_1111_0000

我们不管符号位,那么这个二进制数是31728,但是它表示的定点小数是31728/2^8=123.9375

那么这有什么用呢?例如假设一个小数b=2.3,我们假设其定点小数位数是5,那么其定点小数为int(2.3*2^5)=73,其实际表示的小数为73/2^5=2.28125 看到么,相差无几,而其精度也有定点位数决定。

那么我们假设x,x1,x2为实际小数,y1,y2,y3为定点小数,定位精度是n位,有如下关系

y1=y2+y3 x1=x2+x3

y1=y2-y3 x1=x2-x3

y1=y2/2^n*y3 x1=x2*x3

y1=y2*2^n/y3 x1=x2/x3

加减比较好理解,乘除为什么需要移位呢?以乘法为例子

y1=x1*2^n

y2*y3=x2*x3*x^2n                  ==>>y1*2^n=y2*y3 证毕



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3